package com.metaverse.backend.douyin;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.*;

@Data
@ApiModel("玩家数据")
public class PlayerDataDTO {

    @ApiModelProperty("用户的加密openid，当前其实没有加密")
    private String sec_openid;//:"xxxx",    // 用户的加密openid，当前其实没有加密


    @ApiModelProperty("所有道具信息集合, key为道具名字")
    private Map<String, List<GiftDTO>> gift_map = new HashMap<>();

    @ApiModelProperty("用户头像")
    private String avatar_url;//:"xxx",     // 用户头像
    @ApiModelProperty("用户昵称(不加密)")
    private String nickname;//:"xxxx",      // 用户昵称(不加密)

    @ApiModelProperty("本局积分")
    private Long score = 0L;//:"xxxx",

    @ApiModelProperty("玩家球")
    private Integer ball ;

    @ApiModelProperty("12阵营")
    private Integer location=0;

    @ApiModelProperty("总连胜")
    private Integer winningStreak=0;

    @ApiModelProperty("本局新增连胜")
    private int currentWinningStreak=0;

    @ApiModelProperty("本局瓜分积分")
    private Integer allotScore = 0;
    //---------结束游戏才产生
    @ApiModelProperty("本月积分")
    private Long allscore = 0L;//:"xxxx",

    @ApiModelProperty("本局排名")
    private Integer rank;//":"xxxx",      // 排名

    @ApiModelProperty("上次世界排名")
    private Integer preWorldRank;

    @ApiModelProperty("当前世界排名")
    private Integer worldRank=9999999;

    @ApiModelProperty("本局是否胜利")
    private boolean victory =false;
    /**
     * 添加礼物数据
     * @param giftDTO
     */
    public void cleanInvalidAndAdd(GiftDTO giftDTO){
        //清理失效的数据
        long curTime = System.currentTimeMillis();
        List<GiftDTO> list = this.gift_map.get(giftDTO.getName());
        if(list != null){
            list.removeIf(dto -> dto.getInvalidTime() < curTime);
        }else{
            list = new ArrayList<>();
            this.gift_map.put(giftDTO.getName(), list);
        }

        //添加新的礼物
        list.add(giftDTO);

    }

}
